// m

// 给定一个包含非负整数的数组nums，其中nums[i] 表示第i条边的边长
// 要求统计数组中可以组成三角形三条边的三元组个数

// 解题思路：
// 构成三角形的条件为：任意两边之和大于第三边，或者任意两边差小于第三边

function triangleNumber(nums) {
    // 1. 先对数组从小到大排序
    nums.sort((a, b) => a - b)
    let size = nums.length
    let ans = 0

    for (let i = 2; i < size; i++) {
        let left = 0
        let right = i - 1
        while (left < right) {
            // 说明第一条边太短了，将left右移
            if (nums[left] + nums[right] <= nums[i]) {
                left += 1
            } else {
                // 说明可以构成三角形
                ans += (right - left)
                right -= 1
            }
        }
    }
    return ans
}

let arr = [4,2,3,4]
console.log(triangleNumber(arr))